會對動態數量的影像套用滾動平均 (Rolling Average)

簡短描述

File: \examples\Processing\Loop\RollingAverage\rollingAverage_Loop.vad

預設平台: imaFlex CXP-12 Quad

簡短說明

在不產生影格延遲的情況下,對連續影像串流執行移動平均 (rolling average) 的實作。 系統會計算最後 N 個單色影像的平均值,並用於以色彩將產生的差異視覺化,以對照至目前的影像。 用於建立平均值的影像數量設為 128,但可以修改。

此設計展示了移動平均的運作方式。 但核心元素是一個迴圈,它能解鎖更多的應用與機器視覺運作。 為了理解迴圈的運作方式以及如何實作,此範例是一個完美的起點。

Algorithm

系統會計算每個單一像素的平均值,並正規化為 8 bit 的輸入值範圍。 為此,每個接收到的影格都會與其先前的影格相加,並除以接收到的影格數量。 如果達到移動平均序列的長度,總和就會減去儲存且延遲的影格。 藉此,從第一張影像開始就會產生輸出影像。

在此設計中,兩個條件決定了移動平均序列的長度。 這兩個值都稱為 N_rolling,且必須設為相同的值。 一個處理相減影像的延遲儲存程序,另一個則處理像素值正規化。

Used Loop

運算子 RxImageLink 與 TxImageLink 用於啟用迴圈處理。 輸入影像序列的未正規化平均總和在一個迴圈中處理。 需要第二個迴圈處理來儲存輸入影格,以便稍後相減其值。 每個迴圈都必須與輸入的相機影格同步。 這會引進需要符合啟動條件的 SYNC 運算子。 啟動條件本身由 InsertImage 處理,其中第一次執行會引進單一的最小影格。 所使用的 SYNC 會將影格尺寸最大化至所需的值。

由於平均處理需要儲存一定數量的影格,因此使用了 ImageBufferMultiRoiDyn 運算子。 前幾張影像單純進行儲存,同時透過產生最小影格來滿足同步目的。

使用 VA 模擬將有助於詳細了解其繞過 SYNC 的運作方式。 一般而言,一系列的人工最小影格會執行同步。

Visualization

實作了兩種不同的視覺化方法。第一種將產生 24 bit 的 RGB 影像,其中:

  • 平面 - 內容
  • 紅色 (RED) - 目前影像
  • 綠色 (GREEN) - 平均影像
  • 藍色 (BLUE) - 差異影像

第二種方法是以 HSL 色彩空間為基礎,隨後轉換為 24bit RGB:

  • 平面 - 內容
  • HUE / 色相角度 - 差異影像,其中最小值為綠色
  • SATURATION - 設為最大值
  • LIGHTNESS - 目前影像

第二種方法透過 EffectEnable = 1 開啟。 動態增益因子可用於對所有 Hue 色相角度進行差異 Scaling。

VisualApplets 設計

範例「rollingAverage_Loop.vad」專為基礎組態中的單色 CameraLink 相機所設計,解析度為 1024x1024,每像素 8bit。

Simulation Data

範例「rollingAverage_Loop.vad」資料夾 %VASINSTALLDIR%\examples\Processing\Advanced\RollingAverage\street_sequence*.jpg 包含一系列實用的模擬影像。 為了減少資料量,使用了失真壓縮格式。